查看原文
其他

Unity实时渲染短片《Adam》揭秘:特效制作

1970-01-01 Unity官方 Unity官方平台

在Unity实时渲染短片《Adam》揭秘的系列文章中,我们已经为大家分享了《Adam》的产品设计、资源创作、动画制作,本文将重点介绍Adam Demo中视觉特效背后所涉及的技术。

关于作者


本文作者是Zdravko Pavlov,一名拥有11年经验的视觉特效美术,专注于CG动画合成、游戏特效艺术、3D建模以及灯光与渲染。Zdravko Pavlov负责Adam Demo的美术制作,包括粒子效果及动态模拟。




粒子效果


气体

我使用PhoenixFD设置液态模拟。渲染序列以纹理图表(flipbook texture)的形式在Unity的Shuriken粒子系统中使用。



3D Studio Max中的PhoenixFD模拟预览


粒子控制体积雾的密度,场景中所有区域光也都会影响该雾状体。区域光代码由GFX程序员Robert Cupisz实现,现在可在GitHub找到相关内容。

 
体积雾密度由粒子控制


水坑

我还用PhoenixFD来做水坑涟漪的液态模拟。



 3DS Max视口中模拟液态表面及渲染纹理的预览

 Shuriken粒子系统在Adam脚下触发的效果


渲染序列被再次合并入法线贴图纹理的图表。粒子在机器人的脚下生成,并渲染到一个离屏缓存中。产生的结果用来修改水坑的表面法线。

尘土和烟

射击序列中子弹击中混凝土时产生的火星和尘烟,以及其他一些次级效果(例如,空气中流动的微尘颗粒以及城墙排气口上烟柱),我都是用Unity中原生的Shuriken粒子系统来制作。



部分环境效果示例


动态模拟


Adam中所有的角色都使用了运动捕捉技术。但是,我们仍然要为所有在运动捕捉集合中,无法物理呈现的布料及不同配饰添加另一层次级动画。对此,我们不是手工完成,而是采用一系列动态模拟来实现。

我们事先就预设好需要一些特写及慢动作镜头。模拟效果需要在精度及视觉真实度上与Demo的质量匹配,因此我们使用了一些高端离线模拟解算器。计算结果将烘焙并回放为动画。

袖子

“袖子镜头”,我们在整个生产过程中都这么称呼它。实际上,这是我第一个开始着手的镜头。我尝试了几个不同的布料解算器,以及一些蒙皮粒子方法。




最后选择3DS Max的内置布料修改器用于最终模拟。之后,我设置好一些简单测试并向导演演示。



 

一些最初的布料模拟测试(3DS Max视口预览)


经过一些迭代后,我开始用Adam的动画、几何体制作最终版本进行模拟。



 布料模拟(3DS Max视口)


布料模拟的结果被烘焙后,我使用Alembic Importer ,将其导入到引擎。这个工具由Unity Japan开发,可在GitHub上免费下载。



 Unity中展示以alembic流导入的不同版本的模拟


面具

我为损坏的面具构建了一个简单的Thinking Particles设置。



 面具碎片的Thinking Particles设置


Thinking Particles的程序性及其集成的Volume Breaker能助我进行更快迭代,探索不同的可能性。我将完成的版本交给我们的3D建模师Plamen(Paco) Tamnev,他以此为基础制作最终模型。



不同的Thinking Particles模拟变体


主角扯破的袖子与破碎的面具不仅对剧情本身很重要,同时也能使Adam在后续群体情景中便于被区分出来。

CARONTEFX


Caronte是由Next Limit开发的多重物理模拟引擎,Real Flow将其作为刚体及软体动态解算器已有一些时日。通过与引擎无缝整合,CaronteFX为Unity提供了极高质量的物理解决方案,并帮助我们在紧张的生产时间中制作出尽可能多的特效镜头。

在我们第一次使用时,它还处于Alpha版本,尚未集成绳子与布料的物理模拟,但我们与CaronteFX团队进行了紧密合作。他们在整个制作过程中竭尽全力为我们提供所需的工具及功能选项。目前这些都已包含在Asset Store上的CaronteFX中。

电缆

制作阶段早期,我们对于连接Adam与机器的电缆有些犹豫。因为,我们有些担心电缆的物理表现、几何体交错等等无法达到令人满意的程度。

幸运的是CaronteFX的绳索解算器非常精确,它可以基于几何体三角形进行碰撞计算,因此会将绳索(电缆)的厚度计算在内。



 Unity 5中的CaronteFX播放器


烘焙一个这样的复杂模拟会产生大量的缓存数据。我们使用了CaronteFX中添加的自动蒙皮选项。它会生成一个骨骼层级,并且可将结果导出为FBX文件。



Unity 5中蒙皮动画回放


射击


在这个动作序列中发生了很多事情。子弹的冲击会在地面产生尘土团与火花,伴以混凝土块四散飞溅。一个机器人的腿和手臂被撕成碎片。



早期Thinking Particles原型


这个镜头也是我比较早开始制作的,在一些早期版本中使用了Thinking Particles。Thinking Particles特别的灵活和健壮,让我能快速的尝试不同的场景。随后,当我们在流程中采用CaronteFX时,我在其中重建了这个效果,以便于使用它便利的Unity集成和自动蒙皮功能。



Unity中射击序列的早期原型


CaronteFX拥有一个非常灵活的分段系统。我作为一名视觉特效美术,可以在Unity编辑器内就可以将Asset拆分成不同部分。新生成几何体面的材质会和新Asset保存在一起。



 CaronteFX制作的地面子弹冲击预览


Sebastian 和Lu

这两个角色的制作尤其麻烦。不仅是因为有多种不同类型的动态物体(软性、刚性物体和布料),而且有不少复杂几何体相互层叠,特别是Sebastian。



 基础动画模型(左侧)以及设置好用于模拟的对象(右侧)


我将Sebastian的几何体分为三个组。斗篷、披风和悬挂在皮带上小碎片为一组。裙子、平板和刀在第二组。头巾与耳饰是第三组。然后我开始重新调整元素位置,避免交错,并开始制作低模代理以减少计算量。

 

刀的代理碰撞体对象以及一些关节辅助器的示例

 

Unity 5中Sebastian的模拟


我们已将Sebastian角色发布到Asset Store,其中包括了一个Caronte播放器,以便您能了解模拟的设置方式。

Lu的处理也是相同的过程,但需要模拟的对象没那么多,因此设置起来要更简单和直接。



3DS Max视口中待模拟的Lu模型截图 



CaronteFX播放器预览烘焙前的模拟


我和我们的制作设计师Georgi Simeonov在Lu的裙子上花了不少功夫,才找到厚重皮革的感觉。

最后使用了软性物体来制作裙子,而非单层布料。软性物体能让外形保持的更好,也不会像布料那样波动太大,很符合我们所预期的那种外观和物理表现。

Lu也能在Asset Store下载,其中还包含Adam与Guard角色。我已使用Unity的原生布料模拟,重制了他们的模拟,方便您更轻松对这些角色和Unity的布料系统进行深入研究。    


请点击【阅读原文】访问Unity官方中文社区,下载Adam Demo可执行文件及资源包。


相关阅读

《Adam》图形技术介绍

实时渲染短片《Adam》完整版发布!

一款插件搞定所有物理特效:CaronteFX

实时渲染短片《Adam》揭秘-产品设计

实时渲染短片《Adam》揭秘-资源创作

Unity实时渲染短片《Adam》揭秘:动画制作


点击“阅读原文”下载Adam资源包!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存